Un manuel pour les compétiteurs
par
Caesum
(A Challengers Handbook - Site original : http://www.caesum.com)
(Version française par CommComm avec l'aimable autorisation de Caesum - Cronos - 27 février 2006)
Considérations générales
Ça fait maintenant un bout de temps que je participe à des challenges
et la plupart du temps je n'ai pas conservé de notes sur les solutions.
C'est seulement récemment que j'ai commencé à noter des choses et à conserver
des notes sur les challenges. L'avantage de procéder ainsi est énorme. Une fois,
j'ai réussi environ les quarante premiers challenges sur un site, sans conserver
de notes. Puis un nouveau niveau a été ajouté ... et celui-ci nécessitait d'avoir
résolu les quarante premiers et d'avoir noté une lettre qui avait été ajoutée
à la fin de chaque solution. Retour au point de départ.
D'autres fois, j'ai résolu quelque chose sur un site, et je me
retrouve planté avec exactement le même problème sur un autre site, juste parce que
j'avais oublié comment je l'avais résolu sur le premier.
Troisième point. J'ai vu tant de réinitialisations sur des sites,
et tant de sites qui ont changé d'adresse que conserver des notes sur la façon dont
j'avais résolu les challenges la première fois est vraiment quelque chose d'important
pour moi maintenant. Si vous terminez une série d'épreuves et que deux ans après
le site change d'adresse et réinitialise le challenge, vous vous trouvez
renvoyé au point de départ.
Un quatrième exemple sur l'absence de notes. Récemment, un site présentait quatre niveaux.
Vous arrivez au bout et vous attendez dans l'extase... puis le cinquième niveau arrive et
un des mots de passe se réfère à quelque chose du niveau précédent. Si vous ne pouvez
pas vous en souvenir parce que ça remonte à plusieurs mois, vous êtes planté.
Maintenant que je vous dit tout ça, j'espère que vous garderez une espèce
de mémo, de "logbook" sur les challenges que vous aurez résolus.
Quelques mots d'ordre général à titre de conseil si vous êtes vraiment en rade.
Parfois, vous arrivez à un stade où en essayant de résoudre un
challenge donné, vous ne voyez vraiment plus comment avancer. Le mieux
à faire dans ce cas, c'est ça :
Attendez quelques jours, prenez un peu de repos et puis retournez-y avec
l'esprit frais et recommencez.
Regardez toujours de près la source HTML. Regardez chaque chose et
notez s'il n'y a vraiment rien d'anormal dans cette page source.
J'ai vu des messages codés dans les tabulations et les espaces à la fin de lignes,
ce qui exige vraiment une analyse attentive. Notez tous les noms de scripts,
tous les chemins de répertoire ou de fichiers. Recherchez tout ce qui pourrait sortir
de l'ordinaire.
Peut-être regardez vous dans /level1/level2/index.html avec une référence à
images/blah.jpg. Alors, pourquoi y a-t-il un répertoire d'images dans
le répertoire level2 et qu'y a-t-il d'autre dedans ?
Lisez avec soin tous les commentaires visibles : ne fournissent-ils
pas un indice voilé sur l'épreuve ? Une petite recherche sur Google ne peut-elle vous
conduire quelque part ? Pensez soigneusement à ce que vous cherchez, essayez aussi bien
les phrases que les mots.
Demandez-vous ce qui rend ce niveau différent des autres. Récemment, j'ai fini un niveau
sur un site et je suis passé au suivant. Je n'avais même pas encore regardé ce qu'il y
avait à faire quand j'ai passé la souris sur le lien pointant vers le forum et j'ai remarqué qu'il
avait un nom différent des autres niveaux. Une recherche sur Google a vite révélé
que c'était le nom d'un forum classique ... et devinez quoi ? Il fallait utiliser
un exploit dessus et c'était là l'essence même du challenge. Et plein de gens qui
étaient là depuis longtemps n'avaient pas remarqué la différence. Dans la plupart de ce
genre d'épreuves, c'est de l'observation à 99%.
Souvent vous trouverez une page HTML écrite manuellement parmi un tas
de pages générées par programme et ça peut être un vrai cadeau. Un code manuel est court
et propre. Un code généré par programme est un vrai fouillis.
Si vous avez regardé avec attention des sources HTML depuis suffisamment longtemps,
alors vous verrez les différences au premier coup d'oeil.
Lisez les forums. Normalement, les sites ont un forum : lisez les.
Lisez tout, il y a souvent des indices à trouver au milieu des demandes d'aide
que les gens ont tendance à poster. Les "+Malas riddles" en sont un excellent exemple,
les forums sont truffés d'indices si vous êtes capable de les comprendre.
Mais ceci nécessite souvent plusieurs lectures du forum de A à Z.
Regardez partout sur le site. J'ai réussi des niveaux bizarres
où on peut vraiment être planté juste en regardant sur les sites, dans la
partie téléchargements ou liens, et me rendre compte que cette partie du challenge
a été cachée quelque part sur le site (bêtement à la vue de tout le monde, comme
"voici une wordlist qui pourrait vous être utile").
Le moment est venu de citer quelques outils d'usage quotidien
qui peuvent servir à une quantité de choses. On entend des choses comme "Eh,
j'utilise Linux : et nous, alors ?". Mais pour être honnête, voilà mon opinion :
J'utilise Windows, je n'ai rien contre Linux mais en général les utilisateurs de
Linux semblent aimer la voie de la difficulté pour faire les choses.
Ils aiment lire des manuels et ils adorent les outils en ligne de commande.
Ils aiment écrire des scripts et installer leurs propres systèmes d'exploitation
compiler des kernels et plus généralement tripatouiller tout ce qui leur tombe sous la main.
D'où ma question :"Qu'est ce que ça vous donne de lire ainsi ?".
Les outils dont je parle seront des outils Windows bien qu'il puisse en exister
des équivalents dans d'autres OS (et je suis navré si vous êtes utilisateur de Mac...
mais qui se sert d'un Mac de toute façon ? Et je suppose que vous avez un addon
pour faire tourner des progs PC).
Un bon éditeur de texte, un programme multifonctions.
Wordpad est bon à jeter, laissez tomber. Notepad est bien pour traiter
du texte si vous avez une version qui permet de charger plus de 64 Ko (donc si ce
n'est pas la précédente version de Windows 95/98).
Mon choix : Ultraedit.
UltraEdit détecte les fichiers de format Unix et vous demande si vous voulez les convertir
quand vous les chargez. UltraEdit est rapide. UltraEdit trie, convertit, affiche en hexa,
gère la syntaxe en couleurs, reconnaît différents langages du C à Perl, permet de
comparer des fichiers, permet des formatages complexes, utilise des macros et toutes
sortes d'autres choses auxquelles je n'ai probablement jamais pensé.
Ca vaut vraiment le coup de se le procurer.
Un bon éditeur hexa. J'utilise Hex Workshop.
Il y en a peut-être de meilleurs mais j'utilise celui-ci depuis des années
et il me va bien. Il fait tout ce qu'on attend d'un éditeur hexa comme
manipuler les octets, faire du XOR, des rotations, des comparaisons de fichiers...
Quand vous voulez vraiment savoir ce qui se passe dans un fichier, vous avez besoin
d'un éditeur hexa.
Un langage. Vous devez avoir pour objectif d'être capable de programmer
au moins dans un langage, ce qui vous permettra d'avancer beaucoup plus loin dans les challenges.
Mon préféré est le C, et j'utilise MSVC ou Borland selon l'humeur du moment.
Mais j'ai aussi recours à VBA/Excel, Maple, ASM ou un quelconque des vingt autres
langages que j'ai utilisés ou dont j'ai eu à connaître dans le passé. Apprenez-en un
et celui que vous apprendrez après sera dix fois plus facile à apprendre.
Un vrai "calculo-broyeur" de nombres ("number cruncher").
C'est un outil qu'on ne cite habituellement pas. Peu de gens disposent de quoi
traiter rapidement des nombres de manière très générale.
J'ai fait des maths théoriques à l'université et plus tard un Master of Sciences.
Voilà pourquoi j'aime avoir sous la main une espèce de programme capable de manipuler les nombres dans tous les sens.
En plus j'ai une remise sur Maple
et j'ai eu à l'étudier.
J'utilise Maple pour toutes sortes de problèmes. Citons quelques exemples issus de problèmes
posés sur des sites. Quelques problèmes de cracking ont été construits sur la base de
fonctions modulaires inverses... pas de difficultés avec Maple.
Quelques problèmes sur Vallodolid
impliquent de trouver un jeu de relations mathématiques entre différents points et
puis de résoudre les équations simultanées. Ne vous enquiquinez pas avec ça : donnez-le
à faire à Maple. Ce qui ne signifie pas que Maple soit un outil facile à utiliser.
On ne peut pas le récupérer et aussitôt commencer à résoudre tous ses problèmes avec.
Je sais bien que j'ai de la chance. Quelques rares épreuves ont été basées sur RSA.
Facile à résoudre avec Maple (il est vrai que les problèmes donnés n'étaient pas difficiles).
Cela dit, je me suis aussi fait mes propres routines de calcul avec des grands nombres
et je m'en suis servi pour résoudre des problèmes sur des nombres de 5000 chiffres
sur Vallodolid.
C'est donc une bonne chose que d'avoir quelques routines de calcul sur les grands nombres
dans le langage de votre choix (et si c'est Java, c'est déjà inclus de base).
Il y a quelques livres utiles et qui ne correspondent pas à une catégorie précise.
Quelques références à HTML sont toujours utiles. Personnellement, j'utilise
"Instant HTML" quand je veux rechercher quelque chose, mais j'ai entendu dire que
"Dynamic HTML" est bien. Voir aussi "Code complete" au sujet duquel j'ai été interrogé
après avoir dit que je l'avais lu. Je devrais le relire et me flageller quand je ne
respecte pas ce qu'il dit. "Maximum security" est aussi à recommander aux débutants
car il évoque de très nombreux outils utilisés dans un tas de situations. En lisant ce genre de
livre du début à la fin, vous cesserez d'être un newbie.
Retour au sommaire